package parserjc.jaccie;

/**
* Interface zum Steuern des erzeugten Evaluators.
*/

public interface EvaluatorAction {

	/**
    * Setzt den zu evaluierenden Baum.
    */
    public abstract void setTree(EvaluatorTree tree);

    /**
    * Gibt den derzeit bearbeiteten Baum zur&uuml;ck.
    */
    public abstract EvaluatorTree getTree();

	/**
    * Evaluiert ein berechenbares Attribut des Baumes.
    */
    public abstract void evaluate(String address);

	/**
    * F&uuml;hrt einen Schritt des Evaluators aus.
    * @return "at work" solange noch was zu tun ist
    * @return "complete" sobald er fertig ist
    * @return "cycle" wenn ein Zyklus entdeckt wurde und gestoppt wurde
    */
    public abstract String nextStep();

	/**
    * F&uuml;hrt den Evaluator aus.
    * @return "at work" solange noch was zu tun ist
    * @return "complete" sobald er fertig ist
    * @return "cycle" wenn ein Zyklus entdeckt wurde und gestoppt wurde
    */
    public abstract String doAll();

	/**
    * Setzt den Evaluator zur&uuml;ck.
    */
    public abstract void reset();

	/**
    * Setzt den Evaluator einen Schritt zur&uuml;ck.
    */
    public abstract void back();

	/**
    * Schaltet zwischen dem "Hand-Modus" hin und her.
    * @return true, Falls danach eingeschalten
    */
    public abstract boolean switchHandMode();
}
